<script>
    let util = {};
    util.fmtDate = function (fmt, y, oft) {
        if (!fmt) {
            fmt = 'yyyy-MM-dd';
        }

        if (!oft) {
            oft = false;
        }

        if (typeof (y) === 'string') {
            if (/\.+[0-9]+[A-Z]$/.test(y)) {
                oft = true;
            }
            // 兼容
            y = y.replace(/\-/g, '/').replace(/T/g, ' ').replace(/\.+[0-9]+[A-Z]$/, '');
            // 还原时区
            if (oft) {
                y = new Date(y).getTime() - 3600000 * (new Date().getTimezoneOffset() / 60);
            }
            y = new Date(y);
        } else if (typeof (y) === 'number') {
            y = new Date(y);
        } else if (!y) {
            y = new Date();
        }

        const o = {
            "y+": y.getFullYear(),     //年份
            "M+": y.getMonth() + 1,    //月份
            "d+": y.getDate(),         //日
            "h+": y.getHours(),        //小时
            "m+": y.getMinutes(),      //分
            "s+": y.getSeconds(),      //秒
            "q+": Math.floor((y.getMonth() + 3) / 3), //季度
            "S": y.getMilliseconds()   //毫秒
        };

        if (/(y+)/.test(fmt))
            fmt = fmt.replace(RegExp.$1, (y.getFullYear() + "").substr(4 - RegExp.$1.length));

        for (let k in o)
            if (new RegExp(`(${k})`).test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));

        return fmt;
    }

    var date = new Date('2018-11-22 16:00:00');

    ///////////////////////////////////////
    console.log(dd());

    function dd() {
        // 按天的暂定为直到前一日下午4点前可退款，4点后不可退款（包含4点后预定的下一日的订单）
        let today = new Date(); // 今天
        let todate = util.fmtDate(); // 今日
        let todayHours = new Date().getHours(); // 获取当前小时
        console.log({ today, todate, todayHours });

        /* let createTime = data.addTime; // 创建时间
        let createDate = util.fmtDate('', createTime); // 创建日期
        console.log({ createTime, createDate }); */

        // date // 预定时间
        let currentDate = util.fmtDate('', date); // 预定日期
        // 计算“预定时间”减去“今天”的时间差，得到天数
        let diff = (new Date(currentDate) - new Date(todate)) / 24 / 60 / 60 / 1000;
        console.log({ date, currentDate, diff });

        // 预定日期大于今日，并且在今天4点前，可以退款
        // 测试值17，原始值16
        console.log('currentDate > todate:', currentDate > todate);
        if (currentDate > todate) {
            if (diff > 1) { // 差值大于1天，表示相差两天
                return true;
            } else if (diff === 1) { // 相差1天
                if (todayHours < 16) { // 16前可以退款
                    return true;
                } else { // 16点后不能退款
                    return false;
                }
            } else if (diff < 1) { // 当天的不能退款
                return false;
            }
        } else {
            return false;
        }
    }
</script>